#ifndef COMTRADERECORD_H
#define COMTRADERECORD_H

#include <QObject>

#include <QFile>
#include <QDataStream>
#include <QVector>
#include <QList>

#include "comtradeanalogchannel.h"
#include "comtradedigitalchannel.h"
#include "comtradedata.h"

#define SPLIT_CHAR      ','

class ComtradeRecord : public QObject
{
    Q_OBJECT
public:
    explicit ComtradeRecord(QObject *parent = nullptr);
    ~ComtradeRecord();

signals:

public:
    //CFG
    QString m_station_name;     //厂站名称
    QString m_rec_dev_id;       //记录装置的标识编号或名称
    QString m_rev_year;         //版本年号

    int m_totalChannels;        //通道总数
    int m_analogChannels;       //模拟通道数量
    int m_digitalChannels;      //状态通道数量

    QList<ComtradeAnalogChannel*> m_analogc_ls;     //模拟量
    QList<ComtradeDigitalChannel*> m_digitac_ls;    //开关量
    QList<ComtradeData *> m_dat_ls;

    int m_lf;           //系统电流电压的频率

    int m_nartes;           //采样频率个数
    QList<double> m_samp;    //采样频率
    QList<int> m_endsamp;   //最后一次采样数

    QString m_time_s;   //采样开始时间
    QString m_time_e;   //采样结束时间

    QString m_ft;       //dat文件记录格式

    double m_Timemult;   //时标倍率因子

    bool parse_init(QString cfgfile);

private:
    QFile m_cfgfile;
    QFile m_datfile;

    void parse_title(void);
    void parse_channel_title(void);
    void parse_analog_channel(void);
    void parse_digital_channel(void);
    void parse_hz(void);
    void parse_freq(void);
    void parse_time(void);
    void parse_type(void);
    void parse_timemult(void);

    void parse_dat(void);

    float get_dat(float x=0.0, float a=1.0, float b=0.0);
};

#endif // COMTRADERECORD_H
